the linearizer API now allows to detect metavariables. This is used for instancein the lookup where the tokens produced from the metavariables are interpreted as distinct from all other tokens.

This commit is contained in:
Krasimir Angelov
2017-08-07 16:39:19 +02:00
parent a4c19875ed
commit a8eeb49767
10 changed files with 132 additions and 19 deletions

View File

@@ -52,7 +52,8 @@ namespace PGFSharp
end_phrase = EndPhrase,
symbol_ne = null,
symbol_bind = null,
symbol_capit = null
symbol_capit = null,
symbol_meta = SymbolMeta
};
}
@@ -80,6 +81,10 @@ namespace PGFSharp
else
stack.Peek ().AddChild (b);
}
private void SymbolMeta(IntPtr self, int meta_id) {
stack.Peek().AddChild(new StringChildBracket("?"));
}
public Bracket Build() {
return final;

View File

@@ -221,6 +221,9 @@ namespace PGFSharp
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void LinFuncSymbolCapitalization(IntPtr self);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void LinFuncSymbolMeta(IntPtr self, int meta_id);
[StructLayout(LayoutKind.Sequential)]
public struct PgfLinFuncs
{
@@ -241,6 +244,9 @@ namespace PGFSharp
[MarshalAs(UnmanagedType.FunctionPtr)]
public LinFuncSymbolCapitalization symbol_capit;
[MarshalAs(UnmanagedType.FunctionPtr)]
public LinFuncSymbolMeta symbol_meta;
}
#endregion