summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Torrance <dtorrance@piedmont.edu>2022-03-31 14:12:27 -0400
committerGitHub <noreply@github.com>2022-03-31 20:12:27 +0200
commitaa385f0d01ffca90a884900eb8b4d3a2942c094c (patch)
treeac0f6810041a8d099ac9820204186da224dd2190
parentbfa3f4f1a439faf3b2c05fad1b229e6c9351006f (diff)
downloadpygments-git-aa385f0d01ffca90a884900eb8b4d3a2942c094c.tar.gz
Add Macaulay2 lexer (#1791)
* Add Macaulay2 lexer * Update symbols for Macaulay2 1.18 * Match whitespace characters in Macaulay2 lexer * Add states for strings/comments in Macaulay2 lexer * Update Macaulay2 lexer tests for string/comment edge cases * Improve comment and string matching in Macaulay2 lexer Instead of matching each character one at a time, we match all characters without special meaning together. * Update Macaulay2 test output * Update Macaulay2 lexer symbols for 1.19 release * Move "auto-generated" comment in Macaulay2 lexer down a few lines * Fix underline length in Macaulay2 lexer docstring * Add url field for Macaulay2 lexer * Bump copyright year for Macaulay2 lexer
-rw-r--r--AUTHORS1
-rw-r--r--pygments/lexers/_mapping.py1
-rw-r--r--pygments/lexers/macaulay2.py1692
-rw-r--r--tests/examplefiles/macaulay2/test.m223
-rw-r--r--tests/examplefiles/macaulay2/test.m2.output84
5 files changed, 1801 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
index 307609df..9f417bf9 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -225,6 +225,7 @@ Other contributors, listed alphabetically, are:
* Jeremy Thurgood -- Erlang, Squid config lexers
* Brian Tiffin -- OpenCOBOL lexer
* Bob Tolbert -- Hy lexer
+* Doug Torrance -- Macaulay2 lexer
* Matthias Trute -- Forth lexer
* Tuoa Spi T4 -- Bdd lexer
* Erick Tryzelaar -- Felix lexer
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py
index 3d90f447..e5629068 100644
--- a/pygments/lexers/_mapping.py
+++ b/pygments/lexers/_mapping.py
@@ -282,6 +282,7 @@ LEXERS = {
'MIMELexer': ('pygments.lexers.mime', 'MIME', ('mime',), (), ('multipart/mixed', 'multipart/related', 'multipart/alternative')),
'MOOCodeLexer': ('pygments.lexers.scripting', 'MOOCode', ('moocode', 'moo'), ('*.moo',), ('text/x-moocode',)),
'MSDOSSessionLexer': ('pygments.lexers.shell', 'MSDOS Session', ('doscon',), (), ()),
+ 'Macaulay2Lexer': ('pygments.lexers.macaulay2', 'Macaulay2', ('macaulay2',), ('*.m2',), ()),
'MakefileLexer': ('pygments.lexers.make', 'Makefile', ('make', 'makefile', 'mf', 'bsdmake'), ('*.mak', '*.mk', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile'), ('text/x-makefile',)),
'MakoCssLexer': ('pygments.lexers.templates', 'CSS+Mako', ('css+mako',), (), ('text/css+mako',)),
'MakoHtmlLexer': ('pygments.lexers.templates', 'HTML+Mako', ('html+mako',), (), ('text/html+mako',)),
diff --git a/pygments/lexers/macaulay2.py b/pygments/lexers/macaulay2.py
new file mode 100644
index 00000000..47e7abfe
--- /dev/null
+++ b/pygments/lexers/macaulay2.py
@@ -0,0 +1,1692 @@
+"""
+ pygments.lexers.macaulay2
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ Lexer for Macaulay2.
+
+ :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, words
+from pygments.token import Comment, Keyword, Name, String, Text
+
+__all__ = ['Macaulay2Lexer']
+
+# Auto-generated for Macaulay2-1.19. Do not modify this file manually.
+
+M2KEYWORDS = (
+ "and",
+ "break",
+ "catch",
+ "continue",
+ "do",
+ "elapsedTime",
+ "elapsedTiming",
+ "else",
+ "for",
+ "from",
+ "global",
+ "if",
+ "in",
+ "list",
+ "local",
+ "new",
+ "not",
+ "of",
+ "or",
+ "return",
+ "shield",
+ "SPACE",
+ "step",
+ "symbol",
+ "then",
+ "threadVariable",
+ "throw",
+ "time",
+ "timing",
+ "to",
+ "try",
+ "when",
+ "while",
+ "xor"
+ )
+
+M2DATATYPES = (
+ "Adjacent",
+ "AffineVariety",
+ "Analyzer",
+ "ANCHOR",
+ "AngleBarList",
+ "Array",
+ "AssociativeExpression",
+ "Bag",
+ "BasicList",
+ "BettiTally",
+ "BinaryOperation",
+ "BLOCKQUOTE",
+ "BODY",
+ "BOLD",
+ "Boolean",
+ "BR",
+ "CacheFunction",
+ "CacheTable",
+ "CC",
+ "CDATA",
+ "ChainComplex",
+ "ChainComplexMap",
+ "CODE",
+ "CoherentSheaf",
+ "Command",
+ "COMMENT",
+ "CompiledFunction",
+ "CompiledFunctionBody",
+ "CompiledFunctionClosure",
+ "ComplexField",
+ "Constant",
+ "Database",
+ "DD",
+ "Descent",
+ "Describe",
+ "Dictionary",
+ "DIV",
+ "Divide",
+ "DL",
+ "DocumentTag",
+ "DT",
+ "Eliminate",
+ "EM",
+ "EngineRing",
+ "Equation",
+ "ExampleItem",
+ "Expression",
+ "File",
+ "FilePosition",
+ "FractionField",
+ "Function",
+ "FunctionApplication",
+ "FunctionBody",
+ "FunctionClosure",
+ "GaloisField",
+ "GeneralOrderedMonoid",
+ "GlobalDictionary",
+ "GradedModule",
+ "GradedModuleMap",
+ "GroebnerBasis",
+ "GroebnerBasisOptions",
+ "HashTable",
+ "HEAD",
+ "HEADER1",
+ "HEADER2",
+ "HEADER3",
+ "HEADER4",
+ "HEADER5",
+ "HEADER6",
+ "HeaderType",
+ "Holder",
+ "HR",
+ "HREF",
+ "HTML",
+ "Hybrid",
+ "Hypertext",
+ "HypertextContainer",
+ "HypertextParagraph",
+ "Ideal",
+ "IMG",
+ "ImmutableType",
+ "IndeterminateNumber",
+ "IndexedVariable",
+ "IndexedVariableTable",
+ "InexactField",
+ "InexactFieldFamily",
+ "InexactNumber",
+ "InfiniteNumber",
+ "IntermediateMarkUpType",
+ "ITALIC",
+ "Keyword",
+ "LABEL",
+ "LATER",
+ "LI",
+ "LINK",
+ "List",
+ "LITERAL",
+ "LocalDictionary",
+ "LowerBound",
+ "Manipulator",
+ "MapExpression",
+ "MarkUpType",
+ "Matrix",
+ "MatrixExpression",
+ "MENU",
+ "META",
+ "MethodFunction",
+ "MethodFunctionBinary",
+ "MethodFunctionSingle",
+ "MethodFunctionWithOptions",
+ "Minus",
+ "Module",
+ "Monoid",
+ "MonoidElement",
+ "MonomialIdeal",
+ "MultigradedBettiTally",
+ "MutableHashTable",
+ "MutableList",
+ "MutableMatrix",
+ "Net",
+ "NetFile",
+ "NonAssociativeProduct",
+ "Nothing",
+ "Number",
+ "NumberedVerticalList",
+ "OL",
+ "OneExpression",
+ "Option",
+ "OptionTable",
+ "OrderedMonoid",
+ "Package",
+ "PARA",
+ "Parenthesize",
+ "Parser",
+ "Partition",
+ "PolynomialRing",
+ "Power",
+ "PRE",
+ "Product",
+ "ProductOrder",
+ "Program",
+ "ProgramRun",
+ "ProjectiveHilbertPolynomial",
+ "ProjectiveVariety",
+ "Pseudocode",
+ "QQ",
+ "QuotientRing",
+ "RealField",
+ "Resolution",
+ "Ring",
+ "RingElement",
+ "RingFamily",
+ "RingMap",
+ "RowExpression",
+ "RR",
+ "RRi",
+ "ScriptedFunctor",
+ "SelfInitializingType",
+ "Sequence",
+ "Set",
+ "SheafExpression",
+ "SheafOfRings",
+ "SMALL",
+ "SPAN",
+ "SparseMonomialVectorExpression",
+ "SparseVectorExpression",
+ "String",
+ "STRONG",
+ "STYLE",
+ "SUB",
+ "Subscript",
+ "SUBSECTION",
+ "Sum",
+ "SumOfTwists",
+ "SUP",
+ "Superscript",
+ "Symbol",
+ "SymbolBody",
+ "TABLE",
+ "Table",
+ "Tally",
+ "Task",
+ "TD",
+ "TestInput",
+ "TEX",
+ "TH",
+ "Thing",
+ "Time",
+ "TITLE",
+ "TO",
+ "TO2",
+ "TOH",
+ "TR",
+ "TT",
+ "Type",
+ "UL",
+ "URL",
+ "Variety",
+ "Vector",
+ "VectorExpression",
+ "VerticalList",
+ "VirtualTally",
+ "VisibleList",
+ "WrapperType",
+ "ZeroExpression",
+ "ZZ"
+ )
+
+M2FUNCTIONS = (
+ "about",
+ "abs",
+ "accumulate",
+ "acos",
+ "acosh",
+ "acot",
+ "addCancelTask",
+ "addDependencyTask",
+ "addEndFunction",
+ "addHook",
+ "addStartFunction",
+ "addStartTask",
+ "adjoint",
+ "agm",
+ "alarm",
+ "all",
+ "ambient",
+ "analyticSpread",
+ "ancestor",
+ "ancestors",
+ "andP",
+ "ann",
+ "annihilator",
+ "antipode",
+ "any",
+ "append",
+ "applicationDirectory",
+ "apply",
+ "applyKeys",
+ "applyPairs",
+ "applyTable",
+ "applyValues",
+ "apropos",
+ "arXiv",
+ "ascii",
+ "asin",
+ "asinh",
+ "ass",
+ "assert",
+ "associatedGradedRing",
+ "associatedPrimes",
+ "atan",
+ "atan2",
+ "atEndOfFile",
+ "autoload",
+ "baseFilename",
+ "baseName",
+ "baseRing",
+ "basis",
+ "beginDocumentation",
+ "benchmark",
+ "BesselJ",
+ "BesselY",
+ "betti",
+ "between",
+ "binomial",
+ "borel",
+ "cacheValue",
+ "cancelTask",
+ "capture",
+ "ceiling",
+ "centerString",
+ "chainComplex",
+ "char",
+ "characters",
+ "charAnalyzer",
+ "check",
+ "chi",
+ "class",
+ "clean",
+ "clearEcho",
+ "code",
+ "codim",
+ "coefficient",
+ "coefficientRing",
+ "coefficients",
+ "cohomology",
+ "coimage",
+ "coker",
+ "cokernel",
+ "collectGarbage",
+ "columnAdd",
+ "columnate",
+ "columnMult",
+ "columnPermute",
+ "columnRankProfile",
+ "columnSwap",
+ "combine",
+ "commandInterpreter",
+ "commonest",
+ "commonRing",
+ "comodule",
+ "complement",
+ "complete",
+ "components",
+ "compose",
+ "compositions",
+ "compress",
+ "concatenate",
+ "conductor",
+ "cone",
+ "conjugate",
+ "connectionCount",
+ "constParser",
+ "content",
+ "contract",
+ "conwayPolynomial",
+ "copy",
+ "copyDirectory",
+ "copyFile",
+ "cos",
+ "cosh",
+ "cot",
+ "cotangentSheaf",
+ "coth",
+ "cover",
+ "coverMap",
+ "cpuTime",
+ "createTask",
+ "csc",
+ "csch",
+ "currentDirectory",
+ "currentLineNumber",
+ "currentTime",
+ "deadParser",
+ "debug",
+ "debugError",
+ "decompose",
+ "deepSplice",
+ "default",
+ "degree",
+ "degreeLength",
+ "degrees",
+ "degreesMonoid",
+ "degreesRing",
+ "delete",
+ "demark",
+ "denominator",
+ "depth",
+ "describe",
+ "det",
+ "determinant",
+ "diagonalMatrix",
+ "diameter",
+ "dictionary",
+ "diff",
+ "difference",
+ "dim",
+ "directSum",
+ "disassemble",
+ "discriminant",
+ "dismiss",
+ "distinguished",
+ "divideByVariable",
+ "doc",
+ "document",
+ "drop",
+ "dual",
+ "eagonNorthcott",
+ "echoOff",
+ "echoOn",
+ "eigenvalues",
+ "eigenvectors",
+ "eint",
+ "elements",
+ "eliminate",
+ "End",
+ "endPackage",
+ "entries",
+ "erase",
+ "erf",
+ "erfc",
+ "error",
+ "euler",
+ "eulers",
+ "even",
+ "EXAMPLE",
+ "examples",
+ "exec",
+ "exp",
+ "expectedReesIdeal",
+ "expm1",
+ "exponents",
+ "export",
+ "exportFrom",
+ "exportMutable",
+ "expression",
+ "extend",
+ "exteriorPower",
+ "factor",
+ "Fano",
+ "fileExecutable",
+ "fileExists",
+ "fileLength",
+ "fileMode",
+ "fileReadable",
+ "fileTime",
+ "fileWritable",
+ "fillMatrix",
+ "findFiles",
+ "findHeft",
+ "findProgram",
+ "findSynonyms",
+ "first",
+ "firstkey",
+ "fittingIdeal",
+ "flagLookup",
+ "flatten",
+ "flattenRing",
+ "flip",
+ "floor",
+ "fold",
+ "forceGB",
+ "fork",
+ "format",
+ "formation",
+ "frac",
+ "fraction",
+ "frames",
+ "fromDividedPowers",
+ "fromDual",
+ "functionBody",
+ "futureParser",
+ "Gamma",
+ "gb",
+ "gbRemove",
+ "gbSnapshot",
+ "gcd",
+ "gcdCoefficients",
+ "gcdLLL",
+ "GCstats",
+ "genera",
+ "generateAssertions",
+ "generator",
+ "generators",
+ "genericMatrix",
+ "genericSkewMatrix",
+ "genericSymmetricMatrix",
+ "gens",
+ "genus",
+ "get",
+ "getc",
+ "getChangeMatrix",
+ "getenv",
+ "getGlobalSymbol",
+ "getNetFile",
+ "getNonUnit",
+ "getPrimeWithRootOfUnity",
+ "getSymbol",
+ "getWWW",
+ "GF",
+ "globalAssign",
+ "globalAssignFunction",
+ "globalAssignment",
+ "globalReleaseFunction",
+ "gradedModule",
+ "gradedModuleMap",
+ "gramm",
+ "graphIdeal",
+ "graphRing",
+ "Grassmannian",
+ "groebnerBasis",
+ "groupID",
+ "hash",
+ "hashTable",
+ "heft",
+ "height",
+ "hermite",
+ "hilbertFunction",
+ "hilbertPolynomial",
+ "hilbertSeries",
+ "hold",
+ "Hom",
+ "homogenize",
+ "homology",
+ "homomorphism",
+ "hooks",
+ "horizontalJoin",
+ "html",
+ "httpHeaders",
+ "hypertext",
+ "icFracP",
+ "icFractions",
+ "icMap",
+ "icPIdeal",
+ "ideal",
+ "idealizer",
+ "identity",
+ "image",
+ "imaginaryPart",
+ "importFrom",
+ "independentSets",
+ "index",
+ "indices",
+ "inducedMap",
+ "inducesWellDefinedMap",
+ "info",
+ "input",
+ "insert",
+ "installAssignmentMethod",
+ "installedPackages",
+ "installHilbertFunction",
+ "installMethod",
+ "installMinprimes",
+ "installPackage",
+ "instance",
+ "instances",
+ "integralClosure",
+ "integrate",
+ "intersect",
+ "intersectInP",
+ "intersection",
+ "interval",
+ "inverse",
+ "inversePermutation",
+ "inverseSystem",
+ "irreducibleCharacteristicSeries",
+ "irreducibleDecomposition",
+ "isAffineRing",
+ "isANumber",
+ "isBorel",
+ "isCanceled",
+ "isCommutative",
+ "isConstant",
+ "isDirectory",
+ "isDirectSum",
+ "isEmpty",
+ "isField",
+ "isFinite",
+ "isFinitePrimeField",
+ "isFreeModule",
+ "isGlobalSymbol",
+ "isHomogeneous",
+ "isIdeal",
+ "isInfinite",
+ "isInjective",
+ "isInputFile",
+ "isIsomorphism",
+ "isLinearType",
+ "isListener",
+ "isLLL",
+ "isMember",
+ "isModule",
+ "isMonomialIdeal",
+ "isNormal",
+ "isOpen",
+ "isOutputFile",
+ "isPolynomialRing",
+ "isPrimary",
+ "isPrime",
+ "isPrimitive",
+ "isPseudoprime",
+ "isQuotientModule",
+ "isQuotientOf",
+ "isQuotientRing",
+ "isReady",
+ "isReal",
+ "isReduction",
+ "isRegularFile",
+ "isRing",
+ "isSkewCommutative",
+ "isSorted",
+ "isSquareFree",
+ "isStandardGradedPolynomialRing",
+ "isSubmodule",
+ "isSubquotient",
+ "isSubset",
+ "isSupportedInZeroLocus",
+ "isSurjective",
+ "isTable",
+ "isUnit",
+ "isWellDefined",
+ "isWeylAlgebra",
+ "jacobian",
+ "jacobianDual",
+ "join",
+ "ker",
+ "kernel",
+ "kernelLLL",
+ "kernelOfLocalization",
+ "keys",
+ "kill",
+ "koszul",
+ "last",
+ "lcm",
+ "leadCoefficient",
+ "leadComponent",
+ "leadMonomial",
+ "leadTerm",
+ "left",
+ "length",
+ "letterParser",
+ "lift",
+ "liftable",
+ "limitFiles",
+ "limitProcesses",
+ "lines",
+ "linkFile",
+ "listForm",
+ "listSymbols",
+ "LLL",
+ "lngamma",
+ "load",
+ "loadPackage",
+ "localDictionaries",
+ "localize",
+ "locate",
+ "log",
+ "log1p",
+ "lookup",
+ "lookupCount",
+ "LUdecomposition",
+ "makeDirectory",
+ "makeDocumentTag",
+ "makePackageIndex",
+ "makeS2",
+ "map",
+ "markedGB",
+ "match",
+ "mathML",
+ "matrix",
+ "max",
+ "maxPosition",
+ "member",
+ "memoize",
+ "merge",
+ "mergePairs",
+ "method",
+ "methodOptions",
+ "methods",
+ "midpoint",
+ "min",
+ "mingens",
+ "mingle",
+ "minimalBetti",
+ "minimalPresentation",
+ "minimalPrimes",
+ "minimalReduction",
+ "minimizeFilename",
+ "minors",
+ "minPosition",
+ "minPres",
+ "minprimes",
+ "minus",
+ "mkdir",
+ "mod",
+ "module",
+ "modulo",
+ "monoid",
+ "monomialCurveIdeal",
+ "monomialIdeal",
+ "monomials",
+ "monomialSubideal",
+ "moveFile",
+ "multidegree",
+ "multidoc",
+ "multigraded",
+ "multiplicity",
+ "mutable",
+ "mutableIdentity",
+ "mutableMatrix",
+ "nanosleep",
+ "needs",
+ "needsPackage",
+ "net",
+ "netList",
+ "newClass",
+ "newCoordinateSystem",
+ "newNetFile",
+ "newPackage",
+ "newRing",
+ "nextkey",
+ "nextPrime",
+ "NNParser",
+ "nonspaceAnalyzer",
+ "norm",
+ "normalCone",
+ "notImplemented",
+ "nullhomotopy",
+ "nullParser",
+ "nullSpace",
+ "number",
+ "numcols",
+ "numColumns",
+ "numerator",
+ "numeric",
+ "numericInterval",
+ "numgens",
+ "numRows",
+ "numrows",
+ "odd",
+ "ofClass",
+ "on",
+ "openDatabase",
+ "openDatabaseOut",
+ "openFiles",
+ "openIn",
+ "openInOut",
+ "openListener",
+ "openOut",
+ "openOutAppend",
+ "optionalSignParser",
+ "options",
+ "optP",
+ "orP",
+ "override",
+ "pack",
+ "package",
+ "packageTemplate",
+ "pad",
+ "pager",
+ "pairs",
+ "parent",
+ "part",
+ "partition",
+ "partitions",
+ "parts",
+ "pdim",
+ "peek",
+ "permanents",
+ "permutations",
+ "pfaffians",
+ "pivots",
+ "plus",
+ "poincare",
+ "poincareN",
+ "polarize",
+ "poly",
+ "position",
+ "positions",
+ "power",
+ "powermod",
+ "precision",
+ "preimage",
+ "prepend",
+ "presentation",
+ "pretty",
+ "primaryComponent",
+ "primaryDecomposition",
+ "print",
+ "printerr",
+ "printString",
+ "processID",
+ "product",
+ "profile",
+ "Proj",
+ "projectiveHilbertPolynomial",
+ "promote",
+ "protect",
+ "prune",
+ "pseudocode",
+ "pseudoRemainder",
+ "pushForward",
+ "QQParser",
+ "QRDecomposition",
+ "quotient",
+ "quotientRemainder",
+ "radical",
+ "radicalContainment",
+ "random",
+ "randomKRationalPoint",
+ "randomMutableMatrix",
+ "rank",
+ "read",
+ "readDirectory",
+ "readlink",
+ "readPackage",
+ "realPart",
+ "realpath",
+ "recursionDepth",
+ "reducedRowEchelonForm",
+ "reduceHilbert",
+ "reductionNumber",
+ "reesAlgebra",
+ "reesAlgebraIdeal",
+ "reesIdeal",
+ "regex",
+ "regexQuote",
+ "registerFinalizer",
+ "regSeqInIdeal",
+ "regularity",
+ "relations",
+ "relativizeFilename",
+ "remainder",
+ "remove",
+ "removeDirectory",
+ "removeFile",
+ "removeLowestDimension",
+ "reorganize",
+ "replace",
+ "res",
+ "reshape",
+ "resolution",
+ "resultant",
+ "reverse",
+ "right",
+ "ring",
+ "ringFromFractions",
+ "roots",
+ "rotate",
+ "round",
+ "rowAdd",
+ "rowMult",
+ "rowPermute",
+ "rowRankProfile",
+ "rowSwap",
+ "rsort",
+ "run",
+ "runHooks",
+ "runLengthEncode",
+ "runProgram",
+ "same",
+ "saturate",
+ "scan",
+ "scanKeys",
+ "scanLines",
+ "scanPairs",
+ "scanValues",
+ "schedule",
+ "schreyerOrder",
+ "Schubert",
+ "searchPath",
+ "sec",
+ "sech",
+ "seeParsing",
+ "select",
+ "selectInSubring",
+ "selectVariables",
+ "separate",
+ "separateRegexp",
+ "sequence",
+ "serialNumber",
+ "set",
+ "setEcho",
+ "setGroupID",
+ "setIOExclusive",
+ "setIOSynchronized",
+ "setIOUnSynchronized",
+ "setRandomSeed",
+ "setup",
+ "setupEmacs",
+ "sheaf",
+ "sheafHom",
+ "show",
+ "showHtml",
+ "showTex",
+ "simpleDocFrob",
+ "sin",
+ "singularLocus",
+ "sinh",
+ "size",
+ "size2",
+ "sleep",
+ "smithNormalForm",
+ "solve",
+ "someTerms",
+ "sort",
+ "sortColumns",
+ "source",
+ "span",
+ "Spec",
+ "specialFiber",
+ "specialFiberIdeal",
+ "splice",
+ "splitWWW",
+ "sqrt",
+ "stack",
+ "stacksProject",
+ "standardForm",
+ "standardPairs",
+ "stashValue",
+ "status",
+ "style",
+ "sub",
+ "sublists",
+ "submatrix",
+ "submatrixByDegrees",
+ "subquotient",
+ "subsets",
+ "substitute",
+ "substring",
+ "subtable",
+ "sum",
+ "super",
+ "support",
+ "SVD",
+ "switch",
+ "sylvesterMatrix",
+ "symbolBody",
+ "symlinkDirectory",
+ "symlinkFile",
+ "symmetricAlgebra",
+ "symmetricAlgebraIdeal",
+ "symmetricKernel",
+ "symmetricPower",
+ "synonym",
+ "SYNOPSIS",
+ "syz",
+ "syzygyScheme",
+ "table",
+ "take",
+ "tally",
+ "tan",
+ "tangentCone",
+ "tangentSheaf",
+ "tanh",
+ "target",
+ "taskResult",
+ "temporaryFileName",
+ "tensor",
+ "tensorAssociativity",
+ "terminalParser",
+ "terms",
+ "TEST",
+ "testHunekeQuestion",
+ "tests",
+ "tex",
+ "texMath",
+ "times",
+ "toAbsolutePath",
+ "toCC",
+ "toDividedPowers",
+ "toDual",
+ "toExternalString",
+ "toField",
+ "toList",
+ "toLower",
+ "top",
+ "topCoefficients",
+ "topComponents",
+ "toRR",
+ "toRRi",
+ "toSequence",
+ "toString",
+ "toUpper",
+ "trace",
+ "transpose",
+ "trim",
+ "truncate",
+ "truncateOutput",
+ "tutorial",
+ "ultimate",
+ "unbag",
+ "uncurry",
+ "undocumented",
+ "uniform",
+ "uninstallAllPackages",
+ "uninstallPackage",
+ "unique",
+ "unsequence",
+ "unstack",
+ "use",
+ "userSymbols",
+ "utf8",
+ "utf8check",
+ "validate",
+ "value",
+ "values",
+ "variety",
+ "vars",
+ "vector",
+ "versalEmbedding",
+ "wait",
+ "wedgeProduct",
+ "weightRange",
+ "whichGm",
+ "width",
+ "wikipedia",
+ "wrap",
+ "youngest",
+ "zero",
+ "zeta",
+ "ZZParser"
+ )
+
+M2CONSTANTS = (
+ "AbstractToricVarieties",
+ "Acknowledgement",
+ "AdditionalPaths",
+ "AdjointIdeal",
+ "AfterEval",
+ "AfterNoPrint",
+ "AfterPrint",
+ "AInfinity",
+ "AlgebraicSplines",
+ "Algorithm",
+ "Alignment",
+ "AllCodimensions",
+ "allowableThreads",
+ "AnalyzeSheafOnP1",
+ "applicationDirectorySuffix",
+ "argument",
+ "Ascending",
+ "AssociativeAlgebras",
+ "Authors",
+ "AuxiliaryFiles",
+ "backtrace",
+ "Bareiss",
+ "BaseFunction",
+ "baseRings",
+ "BaseRow",
+ "BasisElementLimit",
+ "Bayer",
+ "BeforePrint",
+ "BeginningMacaulay2",
+ "Benchmark",
+ "Bertini",
+ "BettiCharacters",
+ "BGG",
+ "BIBasis",
+ "Binary",
+ "Binomial",
+ "BinomialEdgeIdeals",
+ "Binomials",
+ "BKZ",
+ "BlockMatrix",
+ "Body",
+ "BoijSoederberg",
+ "Book3264Examples",
+ "BooleanGB",
+ "Boxes",
+ "Browse",
+ "Bruns",
+ "cache",
+ "CacheExampleOutput",
+ "CallLimit",
+ "CannedExample",
+ "Caveat",
+ "Center",
+ "Certification",
+ "ChainComplexExtras",
+ "ChainComplexOperations",
+ "ChangeMatrix",
+ "CharacteristicClasses",
+ "CheckDocumentation",
+ "Chordal",
+ "Classic",
+ "clearAll",
+ "clearOutput",
+ "close",
+ "closeIn",
+ "closeOut",
+ "ClosestFit",
+ "Code",
+ "CodimensionLimit",
+ "CoefficientRing",
+ "Cofactor",
+ "CohenEngine",
+ "CohenTopLevel",
+ "CohomCalg",
+ "CoincidentRootLoci",
+ "commandLine",
+ "CompactMatrix",
+ "compactMatrixForm",
+ "Complement",
+ "CompleteIntersection",
+ "CompleteIntersectionResolutions",
+ "Complexes",
+ "ConductorElement",
+ "Configuration",
+ "ConformalBlocks",
+ "Consequences",
+ "Constants",
+ "Contributors",
+ "ConvexInterface",
+ "ConwayPolynomials",
+ "copyright",
+ "Core",
+ "CorrespondenceScrolls",
+ "Cremona",
+ "currentFileDirectory",
+ "currentFileName",
+ "currentLayout",
+ "currentPackage",
+ "Cyclotomic",
+ "Date",
+ "dd",
+ "DebuggingMode",
+ "debuggingMode",
+ "debugLevel",
+ "DecomposableSparseSystems",
+ "Decompose",
+ "Default",
+ "defaultPrecision",
+ "Degree",
+ "DegreeLift",
+ "DegreeLimit",
+ "DegreeMap",
+ "DegreeOrder",
+ "DegreeRank",
+ "Degrees",
+ "Dense",
+ "Density",
+ "Depth",
+ "Descending",
+ "Description",
+ "DeterminantalRepresentations",
+ "DGAlgebras",
+ "dictionaryPath",
+ "DiffAlg",
+ "Dispatch",
+ "DivideConquer",
+ "DividedPowers",
+ "Divisor",
+ "Dmodules",
+ "docExample",
+ "docTemplate",
+ "Down",
+ "EagonResolution",
+ "EdgeIdeals",
+ "edit",
+ "EigenSolver",
+ "EisenbudHunekeVasconcelos",
+ "Elimination",
+ "EliminationMatrices",
+ "EllipticCurves",
+ "EllipticIntegrals",
+ "Email",
+ "end",
+ "endl",
+ "Engine",
+ "engineDebugLevel",
+ "EngineTests",
+ "EnumerationCurves",
+ "environment",
+ "EquivariantGB",
+ "errorDepth",
+ "EulerConstant",
+ "Example",
+ "ExampleFiles",
+ "ExampleSystems",
+ "Exclude",
+ "exit",
+ "Ext",
+ "ExteriorIdeals",
+ "ExteriorModules",
+ "false",
+ "FastMinors",
+ "FastNonminimal",
+ "FGLM",
+ "fileDictionaries",
+ "fileExitHooks",
+ "FileName",
+ "FindOne",
+ "FiniteFittingIdeals",
+ "First",
+ "FirstPackage",
+ "FlatMonoid",
+ "Flexible",
+ "flush",
+ "FollowLinks",
+ "FormalGroupLaws",
+ "Format",
+ "FourierMotzkin",
+ "FourTiTwo",
+ "fpLLL",
+ "FrobeniusThresholds",
+ "FunctionFieldDesingularization",
+ "GBDegrees",
+ "gbTrace",
+ "GenerateAssertions",
+ "Generic",
+ "GenericInitialIdeal",
+ "gfanInterface",
+ "Givens",
+ "GKMVarieties",
+ "GLex",
+ "Global",
+ "GlobalAssignHook",
+ "globalAssignmentHooks",
+ "GlobalHookStore",
+ "GlobalReleaseHook",
+ "Gorenstein",
+ "GradedLieAlgebras",
+ "GraphicalModels",
+ "GraphicalModelsMLE",
+ "Graphics",
+ "Graphs",
+ "GRevLex",
+ "GroebnerStrata",
+ "GroebnerWalk",
+ "GroupLex",
+ "GroupRevLex",
+ "GTZ",
+ "Hadamard",
+ "handleInterrupts",
+ "HardDegreeLimit",
+ "Heading",
+ "Headline",
+ "Heft",
+ "Height",
+ "help",
+ "Hermite",
+ "Hermitian",
+ "HH",
+ "hh",
+ "HigherCIOperators",
+ "HighestWeights",
+ "Hilbert",
+ "HodgeIntegrals",
+ "homeDirectory",
+ "HomePage",
+ "Homogeneous",
+ "Homogeneous2",
+ "HomotopyLieAlgebra",
+ "HorizontalSpace",
+ "HyperplaneArrangements",
+ "id",
+ "IgnoreExampleErrors",
+ "ii",
+ "incomparable",
+ "Increment",
+ "indeterminate",
+ "Index",
+ "indexComponents",
+ "infinity",
+ "InfoDirSection",
+ "infoHelp",
+ "Inhomogeneous",
+ "Inputs",
+ "InstallPrefix",
+ "IntegralClosure",
+ "interpreterDepth",
+ "Intersection",
+ "InvariantRing",
+ "InverseMethod",
+ "Inverses",
+ "InverseSystems",
+ "Invertible",
+ "InvolutiveBases",
+ "Item",
+ "Iterate",
+ "Jacobian",
+ "Jets",
+ "Join",
+ "Jupyter",
+ "K3Carpets",
+ "K3Surfaces",
+ "Keep",
+ "KeepFiles",
+ "KeepZeroes",
+ "Key",
+ "Keywords",
+ "Kronecker",
+ "KustinMiller",
+ "lastMatch",
+ "LatticePolytopes",
+ "Layout",
+ "Left",
+ "LengthLimit",
+ "Lex",
+ "LexIdeals",
+ "Licenses",
+ "LieTypes",
+ "Limit",
+ "Linear",
+ "LinearAlgebra",
+ "LinearTruncations",
+ "lineNumber",
+ "listLocalSymbols",
+ "listUserSymbols",
+ "LLLBases",
+ "loadDepth",
+ "LoadDocumentation",
+ "loadedFiles",
+ "loadedPackages",
+ "Local",
+ "LocalRings",
+ "LongPolynomial",
+ "M0nbar",
+ "Macaulay2Doc",
+ "MakeDocumentation",
+ "MakeHTML",
+ "MakeInfo",
+ "MakeLinks",
+ "MakePDF",
+ "MapleInterface",
+ "Markov",
+ "Matroids",
+ "maxAllowableThreads",
+ "maxExponent",
+ "MaximalRank",
+ "MaxReductionCount",
+ "MCMApproximations",
+ "minExponent",
+ "MinimalGenerators",
+ "MinimalMatrix",
+ "minimalPresentationMap",
+ "minimalPresentationMapInv",
+ "MinimalPrimes",
+ "Minimize",
+ "MinimumVersion",
+ "Miura",
+ "MixedMultiplicity",
+ "ModuleDeformations",
+ "MonodromySolver",
+ "Monomial",
+ "MonomialAlgebras",
+ "MonomialIntegerPrograms",
+ "MonomialOrbits",
+ "MonomialOrder",
+ "Monomials",
+ "MonomialSize",
+ "MultiGradedRationalMap",
+ "MultiplicitySequence",
+ "MultiplierIdeals",
+ "MultiplierIdealsDim2",
+ "MultiprojectiveVarieties",
+ "NAGtypes",
+ "Name",
+ "Nauty",
+ "NautyGraphs",
+ "NCAlgebra",
+ "NCLex",
+ "NewFromMethod",
+ "newline",
+ "NewMethod",
+ "NewOfFromMethod",
+ "NewOfMethod",
+ "nil",
+ "Node",
+ "NoetherianOperators",
+ "NoetherNormalization",
+ "NonminimalComplexes",
+ "NoPrint",
+ "Normaliz",
+ "NormalToricVarieties",
+ "notify",
+ "NTL",
+ "null",
+ "nullaryMethods",
+ "NumericalAlgebraicGeometry",
+ "NumericalCertification",
+ "NumericalImplicitization",
+ "NumericalLinearAlgebra",
+ "NumericalSchubertCalculus",
+ "NumericSolutions",
+ "OldPolyhedra",
+ "OldToricVectorBundles",
+ "OO",
+ "oo",
+ "ooo",
+ "oooo",
+ "OpenMath",
+ "operatorAttributes",
+ "OptionalComponentsPresent",
+ "Options",
+ "Order",
+ "order",
+ "OutputDictionary",
+ "Outputs",
+ "PackageCitations",
+ "PackageDictionary",
+ "PackageExports",
+ "PackageImports",
+ "PackageTemplate",
+ "PairLimit",
+ "PairsRemaining",
+ "Parametrization",
+ "Parsing",
+ "path",
+ "PencilsOfQuadrics",
+ "Permanents",
+ "PHCpack",
+ "PhylogeneticTrees",
+ "pi",
+ "PieriMaps",
+ "PlaneCurveSingularities",
+ "Points",
+ "Polyhedra",
+ "Polymake",
+ "Posets",
+ "Position",
+ "PositivityToricBundles",
+ "POSIX",
+ "Postfix",
+ "Pre",
+ "Precision",
+ "Prefix",
+ "prefixDirectory",
+ "prefixPath",
+ "PrimaryDecomposition",
+ "PrimaryTag",
+ "PrimitiveElement",
+ "Print",
+ "printingAccuracy",
+ "printingLeadLimit",
+ "printingPrecision",
+ "printingSeparator",
+ "printingTimeLimit",
+ "printingTrailLimit",
+ "printWidth",
+ "profileSummary",
+ "programPaths",
+ "Projective",
+ "Prune",
+ "PruneComplex",
+ "pruningMap",
+ "Pullback",
+ "PushForward",
+ "Python",
+ "QthPower",
+ "Quasidegrees",
+ "QuaternaryQuartics",
+ "QuillenSuslin",
+ "quit",
+ "Quotient",
+ "Radical",
+ "RadicalCodim1",
+ "RaiseError",
+ "RandomCanonicalCurves",
+ "RandomComplexes",
+ "RandomCurves",
+ "RandomCurvesOverVerySmallFiniteFields",
+ "RandomGenus14Curves",
+ "RandomIdeals",
+ "RandomMonomialIdeals",
+ "RandomObjects",
+ "RandomPlaneCurves",
+ "RandomPoints",
+ "RandomSpaceCurves",
+ "Range",
+ "RationalMaps",
+ "RationalPoints",
+ "RationalPoints2",
+ "ReactionNetworks",
+ "RealFP",
+ "RealQP",
+ "RealQP1",
+ "RealRoots",
+ "RealRR",
+ "RealXD",
+ "recursionLimit",
+ "Reduce",
+ "ReesAlgebra",
+ "References",
+ "ReflexivePolytopesDB",
+ "Regularity",
+ "RelativeCanonicalResolution",
+ "Reload",
+ "RemakeAllDocumentation",
+ "RerunExamples",
+ "ResidualIntersections",
+ "ResLengthThree",
+ "ResolutionsOfStanleyReisnerRings",
+ "restart",
+ "Result",
+ "Resultants",
+ "returnCode",
+ "Reverse",
+ "RevLex",
+ "Right",
+ "rootPath",
+ "rootURI",
+ "RunDirectory",
+ "RunExamples",
+ "RunExternalM2",
+ "Saturation",
+ "Schubert2",
+ "SchurComplexes",
+ "SchurFunctors",
+ "SchurRings",
+ "scriptCommandLine",
+ "SCSCP",
+ "SectionRing",
+ "SeeAlso",
+ "SegreClasses",
+ "SemidefiniteProgramming",
+ "Seminormalization",
+ "SeparateExec",
+ "Serialization",
+ "sheafExt",
+ "ShimoyamaYokoyama",
+ "showClassStructure",
+ "showStructure",
+ "showUserStructure",
+ "SimpleDoc",
+ "SimplicialComplexes",
+ "SimplicialDecomposability",
+ "SimplicialPosets",
+ "SimplifyFractions",
+ "SizeLimit",
+ "SkewCommutative",
+ "SlackIdeals",
+ "SLnEquivariantMatrices",
+ "SLPexpressions",
+ "Sort",
+ "SortStrategy",
+ "SourceCode",
+ "SourceRing",
+ "SpaceCurves",
+ "SparseResultants",
+ "SpechtModule",
+ "SpecialFanoFourfolds",
+ "SpectralSequences",
+ "SRdeformations",
+ "Standard",
+ "StartWithOneMinor",
+ "StatePolytope",
+ "StatGraphs",
+ "stderr",
+ "stdio",
+ "StopBeforeComputation",
+ "stopIfError",
+ "StopWithMinimalGenerators",
+ "Strategy",
+ "StronglyStableIdeals",
+ "Style",
+ "SubalgebraBases",
+ "Subnodes",
+ "SubringLimit",
+ "subscript",
+ "Sugarless",
+ "SumsOfSquares",
+ "SuperLinearAlgebra",
+ "superscript",
+ "SVDComplexes",
+ "SwitchingFields",
+ "SymbolicPowers",
+ "SymmetricPolynomials",
+ "Synopsis",
+ "Syzygies",
+ "SyzygyLimit",
+ "SyzygyMatrix",
+ "SyzygyRows",
+ "TangentCone",
+ "TateOnProducts",
+ "TensorComplexes",
+ "Test",
+ "testExample",
+ "TestIdeals",
+ "TeXmacs",
+ "Text",
+ "ThinSincereQuivers",
+ "ThreadedGB",
+ "Threshold",
+ "Topcom",
+ "topLevelMode",
+ "Tor",
+ "TorAlgebra",
+ "Toric",
+ "ToricInvariants",
+ "ToricTopology",
+ "ToricVectorBundles",
+ "TotalPairs",
+ "Tree",
+ "TriangularSets",
+ "Tries",
+ "Trim",
+ "Triplets",
+ "Tropical",
+ "true",
+ "Truncate",
+ "Truncations",
+ "TSpreadIdeals",
+ "TypicalValue",
+ "typicalValues",
+ "Undo",
+ "Unique",
+ "Units",
+ "Unmixed",
+ "Up",
+ "UpdateOnly",
+ "UpperTriangular",
+ "Usage",
+ "UseCachedExampleOutput",
+ "UseHilbertFunction",
+ "UserMode",
+ "UseSyzygies",
+ "Variable",
+ "VariableBaseName",
+ "Variables",
+ "Vasconcelos",
+ "VectorFields",
+ "VectorGraphics",
+ "Verbose",
+ "Verbosity",
+ "Verify",
+ "VersalDeformations",
+ "Version",
+ "version",
+ "VerticalSpace",
+ "viewHelp",
+ "VirtualResolutions",
+ "Visualize",
+ "WebApp",
+ "Weights",
+ "WeylAlgebra",
+ "WeylGroups",
+ "Wrap",
+ "XML"
+ )
+
+class Macaulay2Lexer(RegexLexer):
+ name = 'Macaulay2'
+ url = 'https://faculty.math.illinois.edu/Macaulay2/'
+ aliases = ['macaulay2']
+ filenames = ['*.m2']
+
+ tokens = {
+ 'root': [
+ (r'--.*$', Comment.Single),
+ (r'-\*', Comment.Multiline, 'block comment'),
+ (r'"', String, 'quote string'),
+ (r'///', String, 'slash string'),
+ (words(M2KEYWORDS, prefix=r'\b', suffix=r'\b'), Keyword),
+ (words(M2DATATYPES, prefix=r'\b', suffix=r'\b'), Name.Builtin),
+ (words(M2FUNCTIONS, prefix=r'\b', suffix=r'\b'), Name.Function),
+ (words(M2CONSTANTS, prefix=r'\b', suffix=r'\b'), Name.Constant),
+ (r'\s+', Text.Whitespace),
+ (r'.', Text)
+ ],
+ 'block comment' : [
+ (r'[^*-]+', Comment.Multiline),
+ (r'\*-', Comment.Multiline, '#pop'),
+ (r'[*-]', Comment.Multiline)
+ ],
+ 'quote string' : [
+ (r'[^\\"]+', String),
+ (r'"', String, '#pop'),
+ (r'\\"?', String),
+ ],
+ 'slash string' : [
+ (r'[^/]+', String),
+ (r'(//)+(?!/)', String),
+ (r'/(//)+(?!/)', String, '#pop'),
+ (r'/', String)
+ ]
+ }
diff --git a/tests/examplefiles/macaulay2/test.m2 b/tests/examplefiles/macaulay2/test.m2
new file mode 100644
index 00000000..3bf0cf28
--- /dev/null
+++ b/tests/examplefiles/macaulay2/test.m2
@@ -0,0 +1,23 @@
+"this is a string"
+
+"this is how we \"escape quotes\" in a string"
+
+"this is how " | "we concatenate strings"
+
+///this is also
+a string///
+
+///to escape forward slashes (/) in a string, we
+use an even number in the middle //// or an odd number
+(at least 3) at the end///
+
+-- this is a comment
+
+-* this is
+also a comment *-
+
+-* two comments *- 2 + 2 -* on the same line *-
+
+for i from 0 to 10 do print QQ
+
+end
diff --git a/tests/examplefiles/macaulay2/test.m2.output b/tests/examplefiles/macaulay2/test.m2.output
new file mode 100644
index 00000000..1042273e
--- /dev/null
+++ b/tests/examplefiles/macaulay2/test.m2.output
@@ -0,0 +1,84 @@
+'"' Literal.String
+'this is a string' Literal.String
+'"' Literal.String
+'\n\n' Text.Whitespace
+
+'"' Literal.String
+'this is how we ' Literal.String
+'\\"' Literal.String
+'escape quotes' Literal.String
+'\\"' Literal.String
+' in a string' Literal.String
+'"' Literal.String
+'\n\n' Text.Whitespace
+
+'"' Literal.String
+'this is how ' Literal.String
+'"' Literal.String
+' ' Text.Whitespace
+'|' Text
+' ' Text.Whitespace
+'"' Literal.String
+'we concatenate strings' Literal.String
+'"' Literal.String
+'\n\n' Text.Whitespace
+
+'///' Literal.String
+'this is also\na string' Literal.String
+'///' Literal.String
+'\n\n' Text.Whitespace
+
+'///' Literal.String
+'to escape forward slashes (' Literal.String
+'/' Literal.String
+') in a string, we\nuse an even number in the middle ' Literal.String
+'////' Literal.String
+' or an odd number\n(at least 3) at the end' Literal.String
+'///' Literal.String
+'\n\n' Text.Whitespace
+
+'-- this is a comment' Comment.Single
+'\n\n' Text.Whitespace
+
+'-*' Comment.Multiline
+' this is\nalso a comment ' Comment.Multiline
+'*-' Comment.Multiline
+'\n\n' Text.Whitespace
+
+'-*' Comment.Multiline
+' two comments ' Comment.Multiline
+'*-' Comment.Multiline
+' ' Text.Whitespace
+'2' Text
+' ' Text.Whitespace
+'+' Text
+' ' Text.Whitespace
+'2' Text
+' ' Text.Whitespace
+'-*' Comment.Multiline
+' on the same line ' Comment.Multiline
+'*-' Comment.Multiline
+'\n\n' Text.Whitespace
+
+'for' Keyword
+' ' Text.Whitespace
+'i' Text
+' ' Text.Whitespace
+'from' Keyword
+' ' Text.Whitespace
+'0' Text
+' ' Text.Whitespace
+'to' Keyword
+' ' Text.Whitespace
+'1' Text
+'0' Text
+' ' Text.Whitespace
+'do' Keyword
+' ' Text.Whitespace
+'print' Name.Function
+' ' Text.Whitespace
+'QQ' Name.Builtin
+'\n\n' Text.Whitespace
+
+'end' Name.Constant
+'\n' Text.Whitespace